<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // class中的set和get的使用（扩展）
        // 在ES5标准中我们曾经使用过对象的属性封装，并将其设置了setter和getter方法，
        // 如今我们在ES6的标准中也可以使用上setter和getter方法

        // 声明一个Stu类，内有两个属性name和age
        class Stu{
            name = "zhangsan";
            #age = 20;  // 在类中对属性前加上一个井号，则是将其设置为私有属性。
            set age(a){ // 当设置age属性值时，会自动调用此方法
                // 判断a年龄信息是否和法
                if(a < 10 || a > 100){
                    console.error("年龄赋值非法");
                } else {
                    this.#age = a;
                }
                
            };
            get age(){  // 当获取age属性值时，会自动调用此方法
                return this.#age;
            }
        }

        // 将类Stu实例化成一个对象
        const s = new Stu();
        console.log(s.name);
        s.age = 23; // 设置age属性值，会自动调用setter方法
        console.log(s.age); // 设置age属性值，会自动调用getter方法
        console.log(s);


    </script>
</body>
</html>